package copy;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class hung 
{
	 public static boolean findFile(File src,File dest)
	 {
		for(int i=0;i<src.listFiles().length;i++)if(src.listFiles()[i].getName().compareTo(dest.getName())==0)return true;
	    return false;
	 }
	
	 public static void copyFolder(File src, File dest)
		    	throws IOException{
		 
		    	if(src.isDirectory()){
		 
		    		//if directory not exists, create it
		    		if(!dest.exists()){
		    		   dest.mkdir();
		    		   System.out.println("Directory copied from " 
		                              + src + "  to " + dest);
		    		}
		 
		    		//list all the directory contents
		    		String files[] = src.list();
		 
		    		for (String file : files) {
		    		   //construct the src and dest file structure
		    		   File srcFile = new File(src, file);
		    		   File destFile = new File(dest, file);
		    		   //recursive copy
		    		   copyFolder(srcFile,destFile);
		    		}
		 
		    	}else{
		    		//if file, then copy it
		    		//Use bytes stream to support all file types
		    		    InputStream in = new FileInputStream(src);
		    	        OutputStream out = new FileOutputStream(dest); 
		 
		    	        byte[] buffer = new byte[1024];
		 
		    	        int length;
		    	        //copy the file content in bytes 
		    	        while ((length = in.read(buffer)) > 0){
		    	    	   out.write(buffer, 0, length);
		    	        }
		 
		    	        in.close();
		    	        out.close();
		    	        System.out.println("File copied from " + src + " to " + dest);
		    	}
		    }
	 
	 public static void moveFolder1(File src, File dest)throws IOException{
		 
	    	if(src.isDirectory())
	    	{
	    		   if(!dest.exists())dest.mkdir();
	    		   String files[] = src.list();
	    		   for (String file : files)
	    		   {
	    		      File srcFile = new File(src, file);
	    		      File destFile = new File(dest, file);
	    		      moveFolder(srcFile,destFile);
	    		   }
	    	 }
	    	else
	    	 {
	    		    InputStream in = new FileInputStream(src);
	    	        OutputStream out = new FileOutputStream(dest); 
	    	        byte[] buffer = new byte[1024];
	    	        int length;
	    	        //copy the file content in bytes 
	    	        while ((length = in.read(buffer)) > 0)out.write(buffer, 0, length);
	    	        in.close();
	    	        out.close();     
	    	}
	    	src.delete();
	    }
	 
	 public static void moveFolder(File src, File dest)throws IOException{
		 
	    	if(src.isDirectory())
	    	{
	    		   if(!dest.exists())dest.mkdir();
	    		   String files[] = src.list();
	    		   for (String file : files)
	    		   {
	    		      File srcFile = new File(src, file);
	    		      File destFile = new File(dest, file);
	    		      moveFolder(srcFile,destFile);
	    		   }
	    	 }
	    	else
	    	 {
	    		    InputStream in = new FileInputStream(src);
	    	        OutputStream out = new FileOutputStream(dest); 
	    	        byte[] buffer = new byte[1024];
	    	        int length;
	    	        //copy the file content in bytes 
	    	        while ((length = in.read(buffer)) > 0)out.write(buffer, 0, length);
	    	        in.close();
	    	        out.close();     
	    	}
	    	src.delete();
	    }
     public static void main(String arg[]) throws IOException
     {
    	 File fileSrc=new File("D:\\code\\a");
    	 File fileDest=new File("D:\\copy");
    	 if(findFile(fileSrc, fileDest)) System.out.println("file da ton tai");
    	 else
    	 {
    		 File dest=new File(fileDest,fileSrc.getName());
    		 copyFolder(fileSrc,dest);
    		 System.out.print("xong");
    	 }
    	 
     }
}
